package tela.eventociar;

import ferramentas.CFG;
import ferramentas.DataUtil;
import ferramentas.Query;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.activation.UnsupportedDataTypeException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CadastroEventoCiar extends HttpServlet {

    private String email;
    private String nome;
    private String cpf;
    boolean isVip;
    private String mensagemSucesso = "Sua inscrição foi realizada com sucesso. Você será redirecionado em instantes...";
    private String mensagemSucessoVip = "Obrigado por confirmar sua presença! Você será redirecionado em instantes...";
    private String mensagemUsuarioInscrito = "Não é possível se inscrever!  Fora do prazo de inscrição!";
    private String mensagemErro = "Erro ao cadastrar! Entre em contato com Suporte para tentar resolver o seu problema.";

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        try {
            Date inicioInscricoes = DataUtil.converterData(CFG.INICIO_INRICOES_EVENTO_CIAR, DataUtil.DataFormat.DDMMAAAAHHMM);
            Date finalInscricoes = DataUtil.converterData(CFG.FIM_INRICOES_EVENTO_CIAR, DataUtil.DataFormat.DDMMAAAAHHMM);
            Date agora = new Date();
            
            isVip = request.getParameter("vip") != null ? true : false;
            request.setAttribute("vip", isVip);
            
            boolean podeInscrever = request.getParameter("diadoevento") != null || !(agora.before(inicioInscricoes) || agora.after(finalInscricoes));

            if ( !podeInscrever ) {
                throw new UnsupportedDataTypeException();
            } else {
                cpf = request.getParameter("cpf");
                Query q = new Query();

                boolean isCadastrado = false;
                if (!cpf.isEmpty()) {
                    isCadastrado = q.isUsuarioCadastradoEventoCiar2013(cpf);
                }

                if (!isCadastrado) {
                    // == INFORMAÇÕES PESSOAIS
                    nome = request.getParameter("nome");
                    email = request.getParameter("email");
                    if (nome != null && email != null && cpf != null) {
                        q.cadastraEventoCiar2013(getSql(), cpf, nome, email, isVip);
                        request.setAttribute("mensagem", isVip ? mensagemSucessoVip : mensagemSucesso);
                        request.setAttribute("diadoevento", request.getParameter("diadoevento"));
                    } else {
                        throw new Exception("Variáveis do formulário nulas!");
                    }
                } else {
                    System.out.println(new Date() + " - CPF: " + cpf + "\r\n ->Usuário já está inscrito!");
                    request.setAttribute("erro", true);
                    request.setAttribute("mensagem", "Usuário já está inscrito (CPF: " + cpf + ")!");
                }
            }
        } catch (UnsupportedDataTypeException ex) {
            System.out.println(new Date() + " - CPF: " + cpf + " - Nome: " + nome + "\r\n -> Não é possível se inscrever!  Fora do prazo de inscrição!");
            request.setAttribute("erro", true);
            request.setAttribute("mensagem", mensagemUsuarioInscrito);
        } catch (Exception ex) {
            request.setAttribute("erro", true);
            request.setAttribute("mensagem", mensagemErro);
            System.out.println(new Date() + " - CPF: " + cpf + " - Nome: " + nome + "\r\n ->" + ex);
        } finally {
            request.getRequestDispatcher("/formulariosEspeciais/eventoCiar/info.jsp").forward(request, response);
            out.close();
        }
    }

    public String getSql() {
        return "INSERT INTO inscricoes_evento_ciar_2013 ("
                + " cpf, "
                + " nome, "
                + " email, "
                + " vip, "
                + " horario "
                + " ) VALUES (  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?,  "
                + " ?  "
                + " )";
    }
}
